package com.sinosoft.ptas.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.sinosoft.ptas.entity.NoticeEntity;
import com.sinosoft.ptas.entity.OrganizationNoticeRefEntity;

/**
 * 公告持久化接口定义
 * @author zhangxiaolong
 *
 */
public interface NoticeMapper {
	/**
	 * 添加公告
	 * @param noticeEntity
	 * @return id
	 */
	public void createNotice(NoticeEntity noticeEntity);
	
	/**
	 * 根据公告编号删除公告
	 * @param id
	 */
	public void deleteNoticeByid(String id);
	
	/**
	 * 根据公告编号更新公告
	 * @param noticeEntity
	 */
	public void updateNotice(NoticeEntity noticeEntity);
	
	/**
	 * 根据公告编号查询公告
	 * @param id
	 * @return
	 */
	public NoticeEntity retieveNoticeByid(String id);
	
	/**
	 * 查询全部公告并降序排序
	 * @return
	 */
	public List<NoticeEntity> retiveNotices(NoticeEntity noticeEntity);
	
	/**
	 * 批量创建公告与司局的对应关系
	 * @param OrganizationNoticeRefEntitys
	 */
	public void createOrgNoticeRef(List<OrganizationNoticeRefEntity> organizationNoticeRefEntitys);

	/**
	 * 检索全部公告和司局的对应关系
	 * @return 公告与司局的对应关系实体集合
	 */
	public List<OrganizationNoticeRefEntity> retrieveOrgNoticeRefs();
	
	/**
	 * 根据公告编号删除公告与司局的对应关系
	 * @param noticeId
	 */
	public void deleteOrgNoticeRefByNId(String noticeId);
	
	/**
	 * 根据司局编号和公告编号查询公告与司局的对应关系
	 * @param oId
	 * @param nId
	 * @return
	 */
	public OrganizationNoticeRefEntity retrieveOrgNoticeRefByNIdAndOId(@Param("oId") String oId,@Param("nId") String nId);
	
	/**
	 * 根据司局编号和公告编号更新公告状态
	 * @param organizationNoticeRefEntity
	 */
	public void updateOrgNoticeRefByNIdAndOId(OrganizationNoticeRefEntity organizationNoticeRefEntity);

	/**
	 * 省局查看公告 
	 * @param orgId
	 * @return 公告实体集合
	 */
	public List<NoticeEntity> retiveNoticesByOrgId(String orgId);
	
	/**
	 * 查看未读公告
	 * @param orgId
	 * @return 公告条数
	 */
	public int retrieveNoReadNoticeByOrgId(String orgId);
}
